# -*- coding:utf-8 -*-
"""
@Time:  2024/6/21 10:13
@Auth:  Mrs.Gou 
@Function:  类-面向对象
"""


# 类：1、使用变量存储类的属性 2、使用函数实现类的功能
# 类是一种用户定义的引用数据类型，也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数
# 类是对现实生活中一类具有共同特征的事物的抽象
# self,是实例（对象）本身
# 使用self定义的变量叫实例变量
# 在类里面直接定义的函数，叫实例函数（实例函数第一个参数一定是self，传的是实例本身，调用的时候不用你自由手动传）

# 什么时候用实例，什么时候用类
# 主要考虑：你的类会创建很多对象，主要考虑不同对象，数据是否需要互相影响，如
class Human:
    def __init__(self, n, a, s):
        self.name = n
        self.age = a
        self.sex = s
        # 配偶
        self.__spouse = None

    def __my_spouse(self, n):
        """配偶"""
        self.__spouse = n

    def say(self, n):
        print(f'{n.name}, 你好')

    def love(self, n):
        if n.sex == self.sex:
            print('拒绝同性恋')
            return False
        if not (18 <= n.age < 28):
            print('年龄不合适拒绝')
            return False
        print('这个还可以')
        # 私有，在类里面可以用，出了类就不行了
        self.__my_spouse(n)
        return True

    def get_spouse(self):
        print(self.__spouse)


if __name__ == '__main__':
    will = Human('will', 18, '男')
    youmi = Human('youmi', 17, '男')

    print(will.sex)
    print(youmi.sex)
    will.say(youmi)
    will.love(youmi)
